package demo2;

/**
 * 给定一个非空字符串 s，最多删除一个字符。判断是否能成为回文字符串。
 *
 * 输入: "aba"
 * 输出: True
 *
 * 输入: "abca"
 * 输出: True
 * 解释: 你可以删除c字符。
 */
public class PalinString3 {
    public static void main(String[] args) {
        String s1 = "abca";
        System.out.println(isPlainString(s1));
    }

    public static boolean isPlainString(String s){
        int i = 0;
        int j = s.length()-1;
        while(i < j){
            if(s.charAt(i) == s.charAt(j)){
                i++;
                j--;
            }else{
                // 不相等再给一次机会
                // abcbxa --> bcbx --> bcb || cbx
                return isStrictPlainString(s,i,j-1) || isStrictPlainString(s,i+1,j);
            }
        }
        return true;
    }

    // 判断字符串是否严格回文
    public static boolean isStrictPlainString(String s,int i,int j){
        while(i <= j){
            if(s.charAt(i) != s.charAt(j)){
                return false;
            }
            i++;
            j--;
        }
        return true;
    }
}
